perm filename STYLE[E82,JMC] blob sn#676182 filedate 1982-08-30 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	style[e82,jmc]		A style for interactive programs
C00007 ENDMK
CāŠ—;
style[e82,jmc]		A style for interactive programs

	This paper proposes a consistent style of human interaction
for programs.  Its goals are the following:

	1. A person who has learned this style will be able to
interact with programs that use it with a minimum of new learning.
Note that this is different from optimizing programs for the absolute
beginner to computer usage.  Such a beginner should expect some
difficulties in learning how to use computers, although programs
should avoid creating unnecessary difficulties.  However, one shouldn't
have to learn everything for every new program.

	2. A person who returns to using a program that he hasn't
used for some months will be able to use it without retraining.

	Here are some recommendations aimed at reaching these goals.

	1. There should be as few interaction modes and as few levels
of interaction mode as possible.  The ideal is single level interaction.
The same sequence of keystrokes should have the same effect regardless
of when the keystrokes are typed.

	2. Type-ahead should be permitted.

	3. Menus are dubious as a main method of interaction.  There
is no harm in making them available on call by the user.  However,
it is objectionable if the user has to look at the screen
after entering a mode in order to see that files are mailed by typing
7 at this point.  Instead he should type MAIL or some abbreviation.

	4. As many general purpose commands as possible should be
standardized.  Thus  ?  for finding out about the current state.
HELP <x> for finding out about  <x>, BNF for telling about the
format of commands, etc.

	5. A standard style of command grammar should be developed.
In fact I advocate a sugaring of the LISP style

	(<command name> arg1 ... argn).

The sugaring can drop parentheses when they are avoidable.  It
may also pay to have a standard way of putting the arguments first when
the user finds it convenient.

	6. Anything the user can do, he can also have a macro or
a program do for him.  This requires that anything doable with a
mouse or other device can also be done by typed commands.  There
should be a standard macro facility used by all interactive
programs.  This style should be essentially LISP.  Perhaps the EMACS
in LISP of Bernard Greenberg is the right answer.

	At this point we insert a remark that many users have found that
the LISP machine, which has many advanced features of man-machine
interaction , is seriously deficient in several respects.  It requires
continuous effort to maintain expertise, and it is hard to make
a program do what is ordinarily done with the mouse.

	7. In order to make programs easy to learn it is important
to minimize technical terminology.  For example, the late NLS
text editor required that the user know about units of text called
"groups", "plexes" and "paragraphs".  No other text editor has
required such terminoloy, although many organize text into pages,
and the pages give inexperienced or lapsed users trouble.